package com.wolfword.common.util.object;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * Object工具类
 * @author ServerZhang
 * @date 2017年12月13日
 */
public class ObjectUtil {

	/**
	 * List<Object>对象转换为List<Map>
	 * @param objects
	 * @return
	 * @author ServerZhang
	 * @date 2017年12月13日
	 */
	public static List<Map<String, Object>> object2Map(List<?> objects){
		List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
		Iterator<?> iterator = objects.iterator();
		while(iterator.hasNext()){
			Object next = iterator.next();
			Map<String, Object> map = object2Map(next);
			if (map != null && map.size() > 0) {
				list.add(map);
			}
		}
		return list;
	}
	
	/**
	 * Object对象转换为Map
	 * @param object
	 * @return
	 * @author ServerZhang
	 * @date 2017年12月13日
	 */
	public static Map<String, Object> object2Map(Object object){
		Map<String, Object> map = new HashMap<String, Object>();
		//得到类对象
		Class<? extends Object> objClass = object.getClass();
		//获取类对象的所有属性集合
		Field[] fields = objClass.getDeclaredFields();
		for(Field field : fields){
			field.setAccessible(true);// 设置属性可以访问
			Object value = new Object();
			try {
				value = field.get(object);//得到属性值
				map.put(field.getName(), value);
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return map;
	}
}
